home *** CD-ROM | disk | FTP | other *** search
/ Computer Inter@ctive 17 / Computer Interactive cdrom 17 - gen 99.iso / ZDNETIT / CONTENT / OPTIVDOS.ZIP / INCLUDE.ZIP / VEMATH.H < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-21  |  31.2 KB  |  702 lines

  1. /*  VEmath.h
  2.  
  3.   vector management functions:
  4.   math functions performed on each individual element of an
  5.   array or vector of the data type "extended";   real numbers
  6.  
  7.   Copyright (c) 1996-1998 by Martin Sander
  8.   All Rights Reserved.
  9. */
  10.  
  11. #ifndef __VEMATH_H
  12. #define __VEMATH_H
  13.  
  14. #ifndef __VESTD_H 
  15. #include <VEstd.h>
  16. #endif
  17.  
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21.  
  22.  
  23. #ifdef __BORLANDC__   /* 80-bit IEEE numbers supported.
  24.                          The following  330 lines apply 
  25.                          only to Borland C++            */
  26.  
  27. /**************************  Rounding **********************************/
  28.  
  29. int  __vf   VE_round(  eVector  Y, eVector X, ui size );
  30. int  __vf   VE_roundtoSI( siVector Y, eVector X, ui size );
  31. int  __vf   VE_roundtoI(  iVector  Y, eVector X, ui size );
  32. int  __vf   VE_roundtoLI( liVector Y, eVector X, ui size );
  33. int  __vf   VE_roundtoQI( qiVector Y, eVector X, ui size );
  34. int  __vf   VE_roundtoUS( usVector Y, eVector X, ui size );
  35. int  __vf   VE_roundtoU(  uVector  Y, eVector X, ui size );
  36. int  __vf   VE_roundtoUL( ulVector Y, eVector X, ui size );
  37.  
  38. int  __vf   VE_floor(  eVector  Y, eVector X, ui size );
  39. int  __vf   VE_floortoSI( siVector Y, eVector X, ui size );
  40. int  __vf   VE_floortoI(  iVector  Y, eVector X, ui size );
  41. int  __vf   VE_floortoLI( liVector Y, eVector X, ui size );
  42. int  __vf   VE_floortoQI( qiVector Y, eVector X, ui size );
  43. int  __vf   VE_floortoUS( usVector Y, eVector X, ui size );
  44. int  __vf   VE_floortoU(  uVector  Y, eVector X, ui size );
  45. int  __vf   VE_floortoUL( ulVector Y, eVector X, ui size );
  46.  
  47. int  __vf   VE_ceil(  eVector  Y, eVector X, ui size );
  48. int  __vf   VE_ceiltoSI( siVector Y, eVector X, ui size );
  49. int  __vf   VE_ceiltoI(  iVector  Y, eVector X, ui size );
  50. int  __vf   VE_ceiltoLI( liVector Y, eVector X, ui size );
  51. int  __vf   VE_ceiltoQI( qiVector Y, eVector X, ui size );
  52. int  __vf   VE_ceiltoUS( usVector Y, eVector X, ui size );
  53. int  __vf   VE_ceiltoU(  uVector  Y, eVector X, ui size );
  54. int  __vf   VE_ceiltoUL( ulVector Y, eVector X, ui size );
  55.  
  56. int  __vf   VE_chop(  eVector  Y, eVector X, ui size );
  57. int  __vf   VE_choptoSI( siVector Y, eVector X, ui size );
  58. int  __vf   VE_choptoI(  iVector  Y, eVector X, ui size );
  59. int  __vf   VE_choptoLI( liVector Y, eVector X, ui size );
  60. int  __vf   VE_choptoQI( qiVector Y, eVector X, ui size );
  61. int  __vf   VE_choptoUS( usVector Y, eVector X, ui size );
  62. int  __vf   VE_choptoU(  uVector  Y, eVector X, ui size );
  63. int  __vf   VE_choptoUL( ulVector Y, eVector X, ui size );
  64.  
  65. #define     VE_trunc      VE_chop
  66. #define     VE_trunctoSI  VE_choptoSI
  67. #define     VE_trunctoI   VE_choptoI
  68. #define     VE_trunctoLI  VE_choptoLI
  69. #define     VE_trunctoQI  VE_choptoQI
  70. #define     VE_trunctoUS  VE_choptoUS
  71. #define     VE_trunctoU   VE_choptoU
  72. #define     VE_trunctoUL  VE_choptoUL
  73.  
  74. #if defined V_HUGE
  75.       #define   VE_roundtoUI   VE_roundtoUL
  76.       #define   VE_floortoUI   VE_floortoUL
  77.       #define   VE_ceiltoUI    VE_ceiltoUL
  78.       #define   VE_choptoUI    VE_choptoUL
  79.       #define   VE_trunctoUI   VE_trunctoUL
  80. #else
  81.       #define   VE_roundtoUI   VE_roundtoU
  82.       #define   VE_floortoUI   VE_floortoU
  83.       #define   VE_ceiltoUI    VE_ceiltoU
  84.       #define   VE_choptoUI    VE_choptoU
  85.       #define   VE_trunctoUI   VE_trunctoU
  86. #endif
  87.  
  88. /********************  Comparisons   ********************/
  89.  
  90. void __vf   VE_cmp0(    eVector Y, eVector X, ui size );
  91. ui   __vf   VE_cmp_eq0( eVector Y, eVector X, ui size );
  92. ui   __vf   VE_cmp_ne0( eVector Y, eVector X, ui size );
  93. ui   __vf   VE_cmp_le0( eVector Y, eVector X, ui size );
  94. ui   __vf   VE_cmp_lt0( eVector Y, eVector X, ui size );
  95. ui   __vf   VE_cmp_ge0( eVector Y, eVector X, ui size );
  96. ui   __vf   VE_cmp_gt0( eVector Y, eVector X, ui size );
  97.  
  98. ui   __vf   VE_cmp_eq0ind( uiVector Ind, eVector X, ui size );
  99. ui   __vf   VE_cmp_ne0ind( uiVector Ind, eVector X, ui size );
  100. ui   __vf   VE_cmp_le0ind( uiVector Ind, eVector X, ui size );
  101. ui   __vf   VE_cmp_lt0ind( uiVector Ind, eVector X, ui size );
  102. ui   __vf   VE_cmp_ge0ind( uiVector Ind, eVector X, ui size );
  103. ui   __vf   VE_cmp_gt0ind( uiVector Ind, eVector X, ui size );
  104.  
  105. void __vf   VE_cmpC(    eVector Y, eVector X, ui size, extended C );
  106. ui   __vf   VE_cmp_eqC( eVector Y, eVector X, ui size, extended C );
  107. ui   __vf   VE_cmp_neC( eVector Y, eVector X, ui size, extended C );
  108. ui   __vf   VE_cmp_leC( eVector Y, eVector X, ui size, extended C );
  109. ui   __vf   VE_cmp_ltC( eVector Y, eVector X, ui size, extended C );
  110. ui   __vf   VE_cmp_geC( eVector Y, eVector X, ui size, extended C );
  111. ui   __vf   VE_cmp_gtC( eVector Y, eVector X, ui size, extended C );
  112.  
  113. ui   __vf   VE_cmp_eqCind( uiVector Ind, eVector X, ui size, extended C );
  114. ui   __vf   VE_cmp_neCind( uiVector Ind, eVector X, ui size, extended C );
  115. ui   __vf   VE_cmp_leCind( uiVector Ind, eVector X, ui size, extended C );
  116. ui   __vf   VE_cmp_ltCind( uiVector Ind, eVector X, ui size, extended C );
  117. ui   __vf   VE_cmp_geCind( uiVector Ind, eVector X, ui size, extended C );
  118. ui   __vf   VE_cmp_gtCind( uiVector Ind, eVector X, ui size, extended C );
  119.  
  120. void __vf   VE_cmpV(    eVector Z, eVector X, eVector Y, ui size );
  121. ui   __vf   VE_cmp_eqV( eVector Z, eVector X, eVector Y, ui size );
  122. ui   __vf   VE_cmp_neV( eVector Z, eVector X, eVector Y, ui size );
  123. ui   __vf   VE_cmp_leV( eVector Z, eVector X, eVector Y, ui size );
  124. ui   __vf   VE_cmp_ltV( eVector Z, eVector X, eVector Y, ui size );
  125. ui   __vf   VE_cmp_geV( eVector Z, eVector X, eVector Y, ui size );
  126. ui   __vf   VE_cmp_gtV( eVector Z, eVector X, eVector Y, ui size );
  127.  
  128. ui   __vf   VE_cmp_eqVind( uiVector Ind, eVector X, eVector Y, ui size );
  129. ui   __vf   VE_cmp_neVind( uiVector Ind, eVector X, eVector Y, ui size );
  130. ui   __vf   VE_cmp_leVind( uiVector Ind, eVector X, eVector Y, ui size );
  131. ui   __vf   VE_cmp_ltVind( uiVector Ind, eVector X, eVector Y, ui size );
  132. ui   __vf   VE_cmp_geVind( uiVector Ind, eVector X, eVector Y, ui size );
  133. ui   __vf   VE_cmp_gtVind( uiVector Ind, eVector X, eVector Y, ui size );
  134.  
  135.  
  136. /********************  Standard Arithmetics   ***************************/
  137.  
  138. void  __vf  VE_equC( eVector X, ui size, extended C );
  139. void  __vf  VE_equV( eVector Y, eVector X, ui size );
  140. void  __vf  VEx_equV( eVector Y, eVector X, ui size, extended A, extended B );
  141.  
  142. void  __vf  VE_addC(  eVector Y, eVector X, ui size, extended C );
  143. void  __vf  VE_subC(  eVector Y, eVector X, ui size, extended C );
  144. void  __vf  VE_subrC( eVector Y, eVector X, ui size, extended C );
  145. void  __vf  VE_mulC(  eVector Y, eVector X, ui size, extended C );
  146. void  __vf  VE_divC(  eVector Y, eVector X, ui size, extended C );
  147. void  __vf  VE_divrC( eVector Y, eVector X, ui size, extended C );
  148. void  __vf  VEx_divrC( eVector Y, eVector X, ui size, extended A, extended B, extended C );
  149.  
  150. void  __vf  VE_addV(  eVector Z, eVector X, eVector Y, ui size );
  151. void  __vf  VE_subV(  eVector Z, eVector X, eVector Y, ui size );
  152. void  __vf  VE_subrV( eVector Z, eVector X, eVector Y, ui size );
  153. void  __vf  VE_mulV(  eVector Z, eVector X, eVector Y, ui size );
  154. void  __vf  VE_divV(  eVector Z, eVector X, eVector Y, ui size );
  155. void  __vf  VE_divrV( eVector Z, eVector X, eVector Y, ui size );
  156.  
  157. void  __vf  VEx_addV(  eVector Z, eVector X, eVector Y, ui size, extended A, extended B );
  158.                                  /* Z = (A*X+B) + Y */
  159. void  __vf  VEx_subV(  eVector Z, eVector X, eVector Y, ui size, extended A, extended B );
  160. void  __vf  VEx_subrV( eVector Z, eVector X, eVector Y, ui size, extended A, extended B );
  161. void  __vf  VEx_mulV(  eVector Z, eVector X, eVector Y, ui size, extended A, extended B );
  162. void  __vf  VEx_divV(  eVector Z, eVector X, eVector Y, ui size, extended A, extended B );
  163. void  __vf  VEx_divrV( eVector Z, eVector X, eVector Y, ui size, extended A, extended B );
  164.  
  165. void  __vf  VEs_addV( eVector Z, eVector X, eVector Y, ui size, extended C ); /* Z=C*(X+Y) */
  166. void  __vf  VEs_subV( eVector Z, eVector X, eVector Y, ui size, extended C );
  167. void  __vf  VEs_mulV( eVector Z, eVector X, eVector Y, ui size, extended C );
  168. void  __vf  VEs_divV( eVector Z, eVector X, eVector Y, ui size, extended C );
  169.  
  170. void  __vf  VE_maxC(   eVector Y, eVector X, ui size, extended C );
  171. void  __vf  VE_minC(   eVector Y, eVector X, ui size, extended C );
  172. void  __vf  VE_limit(  eVector Y, eVector X, ui size, extended Min, extended Max );
  173. void  __vf  VE_flush0( eVector Y, eVector X, ui size, extended AbsMin );
  174. void  __vf  VE_maxV(   eVector Z, eVector X, eVector Y, ui size );
  175. void  __vf  VE_minV(   eVector Z, eVector X, eVector Y, ui size );
  176. void  __vf  VE_modC(   eVector Y, eVector X, ui size, extended C );
  177. void  __vf  VE_modV(   eVector Z, eVector X, eVector Y, ui size );
  178. void  __vf  VEx_modV(  eVector Z, eVector X, eVector Y, ui size, extended A, extended B );
  179. #define     VE_fmodC    VE_modC
  180. #define     VE_fmodV    VE_modV
  181. #define     VEx_fmodV   VEx_modV
  182.  
  183. void __vf  VE_redC(  eVector Y, eVector X, ui size, extended C );
  184. void __vf  VE_redV(  eVector Z, eVector X, eVector Y, ui size );
  185. void __vf  VEx_redV( eVector Z, eVector X, eVector Y, ui size, extended A, extended B );
  186. void __vf  VE_visC(  eVector Y, eVector X, ui size, extended C );
  187. void __vf  VE_visV(  eVector Z, eVector X, eVector Y, ui size );
  188. void __vf  VEx_visV( eVector Z, eVector X, eVector Y, ui size, extended A, extended B );
  189. void __vf  VE_hypC(  eVector Y, eVector X, ui size, extended C );
  190. void __vf  VE_hypV(  eVector Z, eVector X, eVector Y, ui size );
  191. void __vf  VEx_hypV( eVector Z, eVector X, eVector Y, ui size, extended A, extended B );
  192.  
  193. void __vf VE_lincomb( eVector Z, eVector X, eVector Y, ui size,
  194.                       extended CX, extended CY );  /* Z[i]=CX*X[i]+CY*Y[i] */
  195.  
  196. #define    VE_sgn    VE_cmp0
  197.  
  198. /***************** Functions of a sub-set of elements  ********************/
  199.  
  200. void  __vf  VE_subvector_equC(  eVector Y, ui subsiz, unsigned samp, extended C );
  201. void  __vf  VE_subvector_equV(  eVector Y, ui subsiz, unsigned samp, eVector X );
  202.  
  203. void  __vf  VE_subvector_addC(  eVector Y, ui subsiz, unsigned samp, extended C );
  204. void  __vf  VE_subvector_subC(  eVector Y, ui subsiz, unsigned samp, extended C );
  205. void  __vf  VE_subvector_subrC( eVector Y, ui subsiz, unsigned samp, extended C );
  206. void  __vf  VE_subvector_mulC(  eVector Y, ui subsiz, unsigned samp, extended C );
  207. void  __vf  VE_subvector_divC(  eVector Y, ui subsiz, unsigned samp, extended C );
  208. void  __vf  VE_subvector_divrC( eVector Y, ui subsiz, unsigned samp, extended C );
  209.  
  210. void  __vf  VE_subvector_addV(  eVector Y, ui subsiz, unsigned samp, eVector X );
  211. void  __vf  VE_subvector_subV(  eVector Y, ui subsiz, unsigned samp, eVector X );
  212. void  __vf  VE_subvector_subrV( eVector Y, ui subsiz, unsigned samp, eVector X );
  213. void  __vf  VE_subvector_mulV(  eVector Y, ui subsiz, unsigned samp, eVector X );
  214. void  __vf  VE_subvector_divV(  eVector Y, ui subsiz, unsigned samp, eVector X );
  215. void  __vf  VE_subvector_divrV( eVector Y, ui subsiz, unsigned samp, eVector X );
  216.  
  217.  
  218. /**********************  Mathematical Functions ***********************/
  219.  
  220. int   __vf   VE_abs( eVector Y, eVector X, ui size );
  221. int   __vf   VE_neg( eVector Y, eVector X, ui size );
  222. int   __vf   VE_inv( eVector Y, eVector X, ui size );
  223. int   __vf   VEx_inv( eVector Y, eVector X, ui size, extended A, extended B );
  224. int   __vf   VE_intfrac( eVector Int, eVector Frac, eVector X, ui size );
  225. #define      VE_modf    VE_intfrac
  226. int   __vf   VE_mantexp( eVector Mant, iVector Exp, eVector X, ui size );
  227. #define      VE_frexp   VE_mantexp
  228.  
  229. int  __vf    VE_hypotC( eVector Y, eVector X, ui size, extended C );
  230. int  __vf    VE_hypotV( eVector Z, eVector X, eVector Y, ui size );
  231. int  __vf    VEx_hypotV( eVector Z, eVector X, eVector Y, ui size, extended A, extended B );
  232.  
  233. int  __vf    VE_scale2( eVector Y, eVector X, ui size, int expo );
  234. int  __vf    VE_scale10( eVector Y, eVector X, ui size, int expo );
  235. #define      VE_ldexp    VE_scale2
  236.  
  237. int  __vf    VE_square( eVector Y, eVector X, ui size );
  238. int  __vf    VEx_square( eVector Y, eVector X, ui size, extended A, extended B );
  239. int  __vf    VE_cubic( eVector Y, eVector X, ui size );
  240. int  __vf    VEx_cubic( eVector Y, eVector X, ui size, extended A, extended B );
  241. int  __vf    VE_quartic( eVector Y, eVector X, ui size );
  242. int  __vf    VEx_quartic( eVector Y, eVector X, ui size, extended A, extended B );
  243. int  __vf    VE_poly( eVector Y, eVector X, ui size, eVector Coeff, unsigned deg );
  244. int  __vf    VEx_poly( eVector Y, eVector X, ui size, eVector Coeff, unsigned deg, extended A, extended B );
  245. int  __vf    VE_ipow( eVector Y, eVector X, ui size, int ipow );
  246. int  __vf    VEx_ipow( eVector Y, eVector X, ui size, int ipow, extended A, extended B, extended C );
  247.                           /* ipow: integer powers of x */
  248. int  __vf    VE_ipow2(  eVector Y, iVector X, ui size );
  249. int  __vf    VE_ipow10( eVector Y, iVector X, ui size );
  250.                           /* ipow2 and ipow10: integer powers of 2 and 10 */
  251.  
  252. int  __vf   VE_pow(    eVector Y, eVector X, ui size, extended expo );
  253. int  __vf   VEx_pow(   eVector Y, eVector X, ui size, extended expo, extended A, extended B, extended C );
  254. int  __vf   VE_pow2(   eVector Y, eVector X, ui size );
  255. int  __vf   VEx_pow2(  eVector Y, eVector X, ui size, extended A, extended B, extended C );
  256. int  __vf   VE_pow10(  eVector Y, eVector X, ui size );
  257. int  __vf   VEx_pow10( eVector Y, eVector X, ui size, extended A, extended B, extended C );
  258.                           /* pow2 and pow10: powers of 2 and 10 */
  259.  
  260. int  __vf   VE_sqrt(  eVector Y, eVector X, ui size );
  261. int  __vf   VEx_sqrt( eVector Y, eVector X, ui size, extended A, extended B, extended C );
  262.  
  263. int  __vf   VE_log(    eVector Y, eVector X, ui size );
  264. int  __vf   VE_log2(   eVector Y, eVector X, ui size );
  265. int  __vf   VE_log10(  eVector Y, eVector X, ui size );
  266. #define     VE_ln    VE_log
  267. int  __vf   VEx_log(   eVector Y, eVector X, ui size, extended A, extended B, extended C );
  268. int  __vf   VEx_log2(  eVector Y, eVector X, ui size, extended A, extended B, extended C );
  269. int  __vf   VEx_log10( eVector Y, eVector X, ui size, extended A, extended B, extended C );
  270. #define     VEx_ln   VEx_log
  271.  
  272. int  __vf   VE_exp(   eVector Y, eVector X, ui size );
  273. int  __vf   VEx_exp(  eVector Y, eVector X, ui size, extended A, extended B, extended C );
  274. int  __vf   VE_expArbBase(  eVector Y, eVector X, ui size, extended Base );
  275. int  __vf   VEx_expArbBase( eVector Y, eVector X, ui size, extended Base,
  276.                             extended A, extended B, extended C );
  277. int  __vf   VE_expc(  eVector Y, eVector X, ui size );
  278. int  __vf   VEx_expc( eVector Y, eVector X, ui size, extended A, extended B, extended C );
  279. int  __vf   VE_exp2(  eVector Y, eVector X, ui size );
  280. int  __vf   VEx_exp2( eVector Y, eVector X, ui size, extended A, extended B, extended C );
  281. int  __vf   VE_exp2(  eVector Y, eVector X, ui size );
  282. int  __vf   VEx_exp2( eVector Y, eVector X, ui size, extended A, extended B, extended C );
  283. int  __vf   VE_exp10(  eVector Y, eVector X, ui size );
  284. int  __vf   VEx_exp10( eVector Y, eVector X, ui size, extended A, extended B, extended C );
  285.                        /* exp2 and exp10 used as synonyms for pow2 and pow10 */
  286. int  __vf   VE_expmx2(  eVector Y, eVector X, ui size );
  287. int  __vf   VEx_expmx2( eVector Y, eVector X, ui size, extended A, extended B, extended C );
  288.                         /* expmx2(x) = exp( -x**2 ) */
  289.  
  290. int  __vf   VE_Gauss(   eVector Y, eVector X, ui size, extended Wid, extended Cent, extended C );
  291. int  __vf   VE_Lorentz( eVector Y, eVector X, ui size, extended Wid, extended Cent, extended C );
  292.  
  293. int  __vf   VE_sin(     eVector Y, eVector X, ui size );
  294. int  __vf   VEx_sin(    eVector Y, eVector X, ui size, extended A, extended B, extended C );
  295. int  __vf   VE_cos(     eVector Y, eVector X, ui size );
  296. int  __vf   VEx_cos(    eVector Y, eVector X, ui size, extended A, extended B, extended C );
  297. int  __vf   VE_sincos(  eVector Sin, eVector Cos, eVector X, ui size );
  298. int  __vf   VEx_sincos( eVector Sin, eVector Cos, eVector X, ui size, extended A, extended B, extended C );
  299.  
  300. int  __vf   VE_tan(     eVector Y, eVector X, ui size );
  301. int  __vf   VEx_tan(    eVector Y, eVector X, ui size, extended A, extended B, extended C );
  302. int  __vf   VE_cot(     eVector Y, eVector X, ui size );
  303. int  __vf   VEx_cot(    eVector Y, eVector X, ui size, extended A, extended B, extended C );
  304.  
  305. int  __vf   VE_sec(     eVector Y, eVector X, ui size );
  306. int  __vf   VEx_sec(    eVector Y, eVector X, ui size, extended A, extended B, extended C );
  307. int  __vf   VE_cosec(   eVector Y, eVector X, ui size );
  308. int  __vf   VEx_cosec(  eVector Y, eVector X, ui size, extended A, extended B, extended C );
  309.  
  310. int  __vf   VE_sin2(    eVector Y, eVector X, ui size );
  311. int  __vf   VEx_sin2(   eVector Y, eVector X, ui size, extended A, extended B, extended C );
  312. int  __vf   VE_cos2(    eVector Y, eVector X, ui size );
  313. int  __vf   VEx_cos2(   eVector Y, eVector X, ui size, extended A, extended B, extended C );
  314. int  __vf   VE_sincos2( eVector Sin, eVector Cos, eVector X, ui size );
  315. int  __vf   VEx_sincos2( eVector Sin, eVector Cos, eVector X, ui size, extended A, extended B, extended C );
  316.  
  317. int  __vf   VE_tan2(     eVector Y, eVector X, ui size );
  318. int  __vf   VEx_tan2(    eVector Y, eVector X, ui size, extended A, extended B, extended C );
  319. int  __vf   VE_cot2(     eVector Y, eVector X, ui size );
  320. int  __vf   VEx_cot2(    eVector Y, eVector X, ui size, extended A, extended B, extended C );
  321. int  __vf   VE_sec2(     eVector Y, eVector X, ui size );
  322. int  __vf   VEx_sec2(    eVector Y, eVector X, ui size, extended A, extended B, extended C );
  323. int  __vf   VE_cosec2(   eVector Y, eVector X, ui size );
  324. int  __vf   VEx_cosec2(  eVector Y, eVector X, ui size, extended A, extended B, extended C );
  325.  
  326. int  __vf   VE_sinrpi(   eVector Y, iVector P, ui size, int q );
  327. int  __vf   VE_cosrpi(   eVector Y, iVector P, ui size, int q );
  328. int  __vf   VE_sincosrpi( eVector Sin, eVector Cos, iVector P, ui size, int q );
  329. int  __vf   VE_tanrpi(   eVector Y, iVector P, ui size, int q );
  330. int  __vf   VE_cotrpi(   eVector Y, iVector P, ui size, int q );
  331. int  __vf   VE_secrpi(   eVector Y, iVector P, ui size, int q );
  332. int  __vf   VE_cosecrpi( eVector Y, iVector P, ui size, int q );
  333.  
  334. int  __vf   VE_sinrpi2(  eVector Y, iVector P, ui size, int q );
  335. int  __vf   VE_cosrpi2(  eVector Y, iVector P, ui size, int q );
  336. int  __vf   VE_sincosrpi2( eVector Sin, eVector Cos, iVector P, ui size, int q );
  337. int  __vf   VE_tanrpi2(  eVector Y, iVector P, ui size, int q );
  338. int  __vf   VE_cotrpi2(  eVector Y, iVector P, ui size, int q );
  339. int  __vf   VE_secrpi2(  eVector Y, iVector P, ui size, int q );
  340. int  __vf   VE_cosecrpi2( eVector Y, iVector P, ui size, int q );
  341.  
  342. int  __vf   VE_sinrpi3(  eVector Y, iVector P, ui size, int q );
  343. int  __vf   VE_cosrpi3(  eVector Y, iVector P, ui size, int q );
  344. int  __vf   VE_sincosrpi3( eVector Sin, eVector Cos, iVector P, ui size, int q );
  345. int  __vf   VE_tanrpi3(  eVector Y, iVector P, ui size, int q );
  346. int  __vf   VE_cotrpi3(  eVector Y, iVector P, ui size, int q );
  347. int  __vf   VE_secrpi3(  eVector Y, iVector P, ui size, int q );
  348. int  __vf   VE_cosecrpi3( eVector Y, iVector P, ui size, int q );
  349.  
  350. int  __vf   VE_sinc(     eVector Y, eVector X, ui size );
  351. int  __vf   VEx_sinc(    eVector Y, eVector X, ui size, extended A, extended B, extended C );
  352.  
  353. int  __vf   VE_asin(    eVector Y, eVector X, ui size );
  354. int  __vf   VEx_asin(   eVector Y, eVector X, ui size, extended A, extended B, extended C );
  355. int  __vf   VE_acos(    eVector Y, eVector X, ui size );
  356. int  __vf   VEx_acos(   eVector Y, eVector X, ui size, extended A, extended B, extended C );
  357. int  __vf   VE_atan(    eVector Y, eVector X, ui size );
  358. int  __vf   VEx_atan(   eVector Y, eVector X, ui size, extended A, extended B, extended C );
  359. int  __vf   VE_atan2(   eVector Z, eVector X, eVector Y, ui size );
  360. int  __vf   VEx_atan2(  eVector Z, eVector X, eVector Y, ui size, extended A, extended B, extended C );
  361.  
  362. int  __vf   VE_sinh(    eVector Y, eVector X, ui size );
  363. int  __vf   VEx_sinh(   eVector Y, eVector X, ui size, extended A, extended B, extended C );
  364. int  __vf   VE_cosh(    eVector Y, eVector X, ui size );
  365. int  __vf   VEx_cosh(   eVector Y, eVector X, ui size, extended A, extended B, extended C );
  366. int  __vf   VE_tanh(    eVector Y, eVector X, ui size );
  367. int  __vf   VEx_tanh(   eVector Y, eVector X, ui size, extended A, extended B, extended C );
  368. int  __vf   VE_coth(    eVector Y, eVector X, ui size );
  369. int  __vf   VEx_coth(   eVector Y, eVector X, ui size, extended A, extended B, extended C );
  370. int  __vf   VE_sech(    eVector Y, eVector X, ui size );
  371. int  __vf   VEx_sech(   eVector Y, eVector X, ui size, extended A, extended B, extended C );
  372. int  __vf   VE_cosech(  eVector Y, eVector X, ui size );
  373. int  __vf   VEx_cosech( eVector Y, eVector X, ui size, extended A, extended B, extended C );
  374. int  __vf   VE_sech2(   eVector Y, eVector X, ui size );
  375. int  __vf   VEx_sech2(  eVector Y, eVector X, ui size, extended A, extended B, extended C );
  376.  
  377.  
  378. #else   /* no 80-bit IEEE number support with Visual C++:
  379.            the following 330 lines apply only to Visual C++  */
  380.  
  381. #define VE_round        VD_round
  382. #define VE_roundtoSI    VD_roundtoSI
  383. #define VE_roundtoI     VD_roundtoI
  384. #define VE_roundtoLI    VD_roundtoLI
  385. #define VE_roundtoQI    VD_roundtoQI
  386. #define VE_roundtoUS    VD_roundtoUS
  387. #define VE_roundtoU     VD_roundtoU
  388. #define VE_roundtoUL    VD_roundtoUL
  389.  
  390. #define VE_floor        VD_floor
  391. #define VE_floortoSI    VD_floortoSI
  392. #define VE_floortoI     VD_floortoI
  393. #define VE_floortoLI    VD_floortoLI
  394. #define VE_floortoQI    VD_floortoQI
  395. #define VE_floortoUS    VD_floortoUS
  396. #define VE_floortoU     VD_floortoU
  397. #define VE_floortoUL    VD_floortoUL
  398.  
  399. #define VE_ceil        VD_ceil
  400. #define VE_ceiltoSI    VD_ceiltoSI
  401. #define VE_ceiltoI     VD_ceiltoI
  402. #define VE_ceiltoLI    VD_ceiltoLI
  403. #define VE_ceiltoQI    VD_ceiltoQI
  404. #define VE_ceiltoUS    VD_ceiltoUS
  405. #define VE_ceiltoU     VD_ceiltoU
  406. #define VE_ceiltoUL    VD_ceiltoUL
  407.  
  408. #define VE_chop        VD_chop
  409. #define VE_choptoSI    VD_choptoSI
  410. #define VE_choptoI     VD_choptoI
  411. #define VE_choptoLI    VD_choptoLI
  412. #define VE_choptoQI    VD_choptoQI
  413. #define VE_choptoUS    VD_choptoUS
  414. #define VE_choptoU     VD_choptoU
  415. #define VE_choptoUL    VD_choptoUL
  416.  
  417. #define VE_trunc       VE_chop
  418. #define VE_trunctoSI   VE_choptoSI
  419. #define VE_trunctoI    VE_choptoI
  420. #define VE_trunctoLI   VE_choptoLI
  421. #define VE_trunctoQI   VE_choptoQI
  422. #define VE_trunctoUS   VE_choptoUS
  423. #define VE_trunctoU    VE_choptoU
  424. #define VE_trunctoUL   VE_choptoUL
  425.  
  426. #define VE_roundtoUI VE_roundtoU
  427. #define VE_floortoUI VE_floortoU
  428. #define VE_ceiltoUI  VE_ceiltoU
  429. #define VE_choptoUI  VE_choptoU
  430. #define VE_trunctoUI VE_trunctoU
  431.  
  432. #define VE_cmp0         VD_cmp0
  433. #define VE_cmp_eq0      VD_cmp_eq0
  434. #define VE_cmp_ne0      VD_cmp_ne0
  435. #define VE_cmp_le0      VD_cmp_le0
  436. #define VE_cmp_lt0      VD_cmp_lt0
  437. #define VE_cmp_ge0      VD_cmp_ge0
  438. #define VE_cmp_gt0      VD_cmp_gt0
  439.  
  440. #define VE_cmp_eq0ind   VD_cmp_eq0ind
  441. #define VE_cmp_ne0ind   VD_cmp_ne0ind
  442. #define VE_cmp_le0ind   VD_cmp_le0ind
  443. #define VE_cmp_lt0ind   VD_cmp_lt0ind
  444. #define VE_cmp_ge0ind   VD_cmp_ge0ind
  445. #define VE_cmp_gt0ind   VD_cmp_gt0ind
  446.  
  447. #define VE_cmpC         VD_cmpC
  448. #define VE_cmp_eqC      VD_cmp_eqC
  449. #define VE_cmp_neC      VD_cmp_neC
  450. #define VE_cmp_leC      VD_cmp_leC
  451. #define VE_cmp_ltC      VD_cmp_ltC
  452. #define VE_cmp_geC      VD_cmp_geC
  453. #define VE_cmp_gtC      VD_cmp_gtC
  454.  
  455. #define VE_cmp_eqCind   VD_cmp_eqCind
  456. #define VE_cmp_neCind   VD_cmp_neCind
  457. #define VE_cmp_leCind   VD_cmp_leCind
  458. #define VE_cmp_ltCind   VD_cmp_ltCind
  459. #define VE_cmp_geCind   VD_cmp_geCind
  460. #define VE_cmp_gtCind   VD_cmp_gtCind
  461.  
  462. #define VE_cmpV         VD_cmpV
  463. #define VE_cmp_eqV      VD_cmp_eqV
  464. #define VE_cmp_neV      VD_cmp_neV
  465. #define VE_cmp_leV      VD_cmp_leV
  466. #define VE_cmp_ltV      VD_cmp_ltV
  467. #define VE_cmp_geV      VD_cmp_geV
  468. #define VE_cmp_gtV      VD_cmp_gtV
  469.  
  470. #define VE_cmp_eqVind   VD_cmp_eqVind
  471. #define VE_cmp_neVind   VD_cmp_neVind
  472. #define VE_cmp_leVind   VD_cmp_leVind
  473. #define VE_cmp_ltVind   VD_cmp_ltVind
  474. #define VE_cmp_geVind   VD_cmp_geVind
  475. #define VE_cmp_gtVind   VD_cmp_gtVind
  476.  
  477. #define VE_equC         VD_equC
  478. #define VE_equV         VD_equV
  479. #define VEx_equV        VDx_equV
  480. #define VE_addC         VD_addC
  481. #define VE_subC         VD_subC
  482. #define VE_subrC        VD_subrC
  483. #define VE_mulC         VD_mulC
  484. #define VE_divC         VD_divC
  485. #define VE_divrC        VD_divrC
  486. #define VEx_divrC       VDx_divrC
  487.  
  488. #define VE_addV         VD_addV
  489. #define VE_subV         VD_subV
  490. #define VE_subrV        VD_subrV
  491. #define VE_mulV         VD_mulV
  492. #define VE_divV         VD_divV
  493. #define VE_divrV        VD_divrV
  494.  
  495. #define VEx_addV        VDx_addV
  496. #define VEx_subV        VDx_subV
  497. #define VEx_subrV       VDx_subrV
  498. #define VEx_mulV        VDx_mulV
  499. #define VEx_divV        VDx_divV
  500. #define VEx_divrV       VDx_divrV
  501.  
  502. #define VE_maxC         VD_maxC
  503. #define VE_minC         VD_minC
  504. #define VE_limit        VD_limit
  505. #define VE_flush0       VD_flush0
  506. #define VE_maxV         VD_maxV
  507. #define VE_minV         VD_minV
  508. #define VE_modC         VD_modC
  509. #define VE_modV         VD_modV
  510. #define VEx_modV        VDx_modV
  511. #define VE_fmodC        VE_modC
  512. #define VE_fmodV        VE_modV
  513. #define VEx_fmodV       VEx_modV
  514.  
  515. #define VE_redC         VD_redC
  516. #define VE_redV         VD_redV
  517. #define VEx_redV        VDx_redV
  518. #define VE_visC         VD_visC
  519. #define VE_visV         VD_visV
  520. #define VEx_visV        VDx_visV
  521. #define VE_hypC         VD_hypC
  522. #define VE_hypV         VD_hypV
  523. #define VEx_hypV        VDx_hypV
  524.  
  525. #define VE_sgn          VE_cmp0
  526.  
  527. #define VE_subvector_equC   VD_subvector_equC
  528. #define VE_subvector_equV   VD_subvector_equV
  529. #define VE_subvector_addC   VD_subvector_addC
  530. #define VE_subvector_subC   VD_subvector_subC
  531. #define VE_subvector_subrC  VD_subvector_subrC
  532. #define VE_subvector_mulC   VD_subvector_mulC
  533. #define VE_subvector_divC   VD_subvector_divC
  534. #define VE_subvector_divrC  VD_subvector_divrC
  535.  
  536. #define VE_subvector_addV   VD_subvector_addV
  537. #define VE_subvector_subV   VD_subvector_subV
  538. #define VE_subvector_subrV  VD_subvector_subrV
  539. #define VE_subvector_mulV   VD_subvector_mulV
  540. #define VE_subvector_divV   VD_subvector_divV
  541. #define VE_subvector_divrV  VD_subvector_divrV
  542.  
  543. /**********************  Mathematical Functions ***********************/
  544.  
  545. #define VE_abs          VD_abs
  546. #define VE_neg          VD_neg
  547. #define VE_inv          VD_inv
  548. #define VEx_inv         VDx_inv
  549. #define VE_intfrac      VD_intfrac
  550. #define VE_modf         VE_intfrac
  551. #define VE_mantexp      VD_mantexp
  552. #define VE_frexp        VE_mantexp
  553. #define VE_hypotC       VD_hypotC
  554. #define VE_hypotV       VD_hypotV
  555. #define VEx_hypotV      VDx_hypotV
  556. #define VE_scale2       VD_scale2
  557. #define VE_ldexp        VE_scale2
  558. #define VE_scale10      VD_scale10
  559. #define VE_square       VD_square
  560. #define VEx_square      VDx_square
  561. #define VE_cubic        VD_cubic
  562. #define VEx_cubic       VDx_cubic
  563. #define VE_quartic      VD_quartic
  564. #define VEx_quartic     VDx_quartic
  565. #define VE_poly         VD_poly
  566. #define VEx_poly        VDx_poly
  567. #define VE_ipow         VD_ipow
  568. #define VEx_ipow        VDx_ipow
  569. #define VE_ipow2        VD_ipow2
  570. #define VE_ipow10       VD_ipow10
  571. #define VE_pow          VD_pow
  572. #define VEx_pow         VDx_pow
  573. #define VE_pow2         VD_pow10
  574. #define VEx_pow2        VDx_pow10
  575. #define VE_pow10        VD_pow10
  576. #define VEx_pow10       VDx_pow10
  577. #define VE_sqrt         VD_sqrt
  578. #define VEx_sqrt        VDx_sqrt
  579. #define VE_log          VD_log
  580. #define VEx_log         VDx_log
  581. #define VE_log2         VD_log2
  582. #define VEx_log2        VDx_log2
  583. #define VE_log10        VD_log10
  584. #define VEx_log10       VDx_log10
  585. #define VE_ln           VE_log
  586. #define VEx_ln          VEx_log
  587. #define VE_exp          VD_exp
  588. #define VEx_exp         VDx_exp
  589. #define VE_expArbBase   VD_expArbBase
  590. #define VEx_expArbBase  VDx_expArbBase
  591. #define VE_expc         VD_expc
  592. #define VEx_expc        VDx_expc
  593. #define VE_exp2         VD_exp2
  594. #define VEx_exp2        VDx_exp2
  595. #define VE_Gauss        VD_Gauss
  596. #define VEx_Gauss       VDx_Gauss
  597. #define VE_Lorentz      VD_Lorentz
  598. #define VEx_Lorentz     VDx_Lorentz
  599. #define VE_sin          VD_sin
  600. #define VEx_sin         VDx_sin
  601. #define VE_cos          VD_cos
  602. #define VEx_cos         VDx_cos
  603. #define VE_sincos       VD_sincos
  604. #define VEx_sincos      VDx_sincos
  605. #define VE_tan          VD_tan
  606. #define VEx_tan         VDx_tan
  607. #define VE_cot          VD_cot
  608. #define VEx_cot         VDx_cot
  609. #define VE_sec          VD_sec
  610. #define VEx_sec         VDx_sec
  611. #define VE_cosec        VD_cosec
  612. #define VEx_cosec       VDx_cosec
  613. #define VE_sin2         VD_sin2
  614. #define VEx_sin2        VDx_sin2
  615. #define VE_cos2         VD_cos2
  616. #define VEx_cos2        VDx_cos2
  617. #define VE_sincos2      VD_sincos2
  618. #define VEx_sincos2     VDx_sincos
  619. #define VE_tan2         VD_tan2
  620. #define VEx_tan2        VDx_tan2
  621. #define VE_cot2         VD_cot2
  622. #define VEx_cot2        VDx_cot2
  623. #define VE_sec2         VD_sec2
  624. #define VEx_sec2        VDx_sec2
  625. #define VE_cosec2       VD_cosec2
  626. #define VEx_cosec2      VDx_cosec2
  627. #define VE_sinrpi       VD_sinrpi
  628. #define VEx_sinrpi      VDx_sinrpi
  629. #define VE_cosrpi       VD_cosrpi
  630. #define VEx_cosrpi      VDx_cosrpi
  631. #define VE_sincosrpi    VD_sincosrpi
  632. #define VEx_sincosrpi   VDx_sincos
  633. #define VE_tanrpi       VD_tanrpi
  634. #define VEx_tanrpi      VDx_tanrpi
  635. #define VE_cotrpi       VD_cotrpi
  636. #define VEx_cotrpi      VDx_cotrpi
  637. #define VE_secrpi       VD_secrpi
  638. #define VEx_secrpi      VDx_secrpi
  639. #define VE_cosecrpi     VD_cosecrpi
  640. #define VEx_cosecrpi    VDx_cosecrpi
  641. #define VE_sinrpi2      VD_sinrpi2
  642. #define VEx_sinrpi2     VDx_sinrpi2
  643. #define VE_cosrpi2      VD_cosrpi2
  644. #define VEx_cosrpi2     VDx_cosrpi2
  645. #define VE_sincosrpi2   VD_sincosrpi2
  646. #define VEx_sincosrpi2  VDx_sincos
  647. #define VE_tanrpi2      VD_tanrpi2
  648. #define VEx_tanrpi2     VDx_tanrpi2
  649. #define VE_cotrpi2      VD_cotrpi2
  650. #define VEx_cotrpi2     VDx_cotrpi2
  651. #define VE_secrpi2      VD_secrpi2
  652. #define VEx_secrpi2     VDx_secrpi2
  653. #define VE_cosecrpi2    VD_cosecrpi2
  654. #define VEx_cosecrpi2   VDx_cosecrpi2
  655. #define VE_sinrpi3      VD_sinrpi3
  656. #define VEx_sinrpi3     VDx_sinrpi3
  657. #define VE_cosrpi3      VD_cosrpi3
  658. #define VEx_cosrpi3     VDx_cosrpi3
  659. #define VE_sincosrpi3   VD_sincosrpi3
  660. #define VEx_sincosrpi3  VDx_sincos
  661. #define VE_tanrpi3      VD_tanrpi3
  662. #define VEx_tanrpi3     VDx_tanrpi3
  663. #define VE_cotrpi3      VD_cotrpi3
  664. #define VEx_cotrpi3     VDx_cotrpi3
  665. #define VE_secrpi3      VD_secrpi3
  666. #define VEx_secrpi3     VDx_secrpi3
  667. #define VE_cosecrpi3    VD_cosecrpi3
  668. #define VEx_cosecrpi3   VDx_cosecrpi3
  669. #define VE_sinc         VD_sinc
  670. #define VEx_sinc        VDx_sinc
  671. #define VE_asin         VD_asin
  672. #define VEx_asin        VDx_asin
  673. #define VE_acos         VD_acos
  674. #define VEx_acos        VDx_acos
  675. #define VE_atan         VD_atan
  676. #define VEx_atan        VDx_atan
  677. #define VE_atan2        VD_atan2
  678. #define VEx_atan2       VDx_atan2
  679. #define VE_sinh         VD_sinh
  680. #define VEx_sinh        VDx_sinh
  681. #define VE_cosh         VD_cosh
  682. #define VEx_cosh        VDx_cosh
  683. #define VE_tanh         VD_tanh
  684. #define VEx_tanh        VDx_tanh
  685. #define VE_coth         VD_coth
  686. #define VEx_coth        VDx_coth
  687. #define VE_sech         VD_sech
  688. #define VEx_sech        VDx_sech
  689. #define VE_cosech       VD_cosech
  690. #define VEx_cosech      VDx_cosech
  691. #define VE_sech2        VD_sech2
  692. #define VEx_sech2       VDx_sech2
  693.  
  694. #endif  /* Borland or Microsoft */
  695.  
  696. #ifdef __cplusplus
  697. }
  698. #endif
  699.  
  700.  
  701. #endif /* __VEMATH_H */
  702.